(function(window, undefined) {
	/*_currentPage: 현재 페이지
	 _dataLength : 전체 json 배열 길이
	 _selector : ul 부분
	 __successCallback : 버튼 눌렀을때 불러올 함수
	 _lastPage : 마지막 페이지

	 ROW : 한 페이지당 뽑는 데이터
	 MAXPAGE : 그릴 페이지 최대 길이 */
	var _currentPage = 1, _dataLength = 0, _selector = null, _successCallback = null, _lastPage = 0, ROW = 10, MAXPAGE = 10;
	var _isDraw = true;/*init이 한번만 실행되도록 강제적으로 블락*/

	var Paging = {};
	window.Paging = window.Paging || Paging;

	/*처음 선언시 사용하고 __dataLength 배열 길에 ajax 가져오고, __selector 에 ul 아이디 셀렉터, __successCallback에 listener 에서 페이지 가져올 ajax 함수 쓰면 됭 */
	Paging.init = function(__dataLength, __selector, __successCallback) {
		_currentPage = 1;
		_dataLength = __dataLength - 1;
		_selector = __selector;
		_successCallback = __successCallback;
		_lastPage = parseInt(_dataLength / ROW) + 1;

		draw();
	};
	/*ajax호환용*/
	Paging.innerAJAX = function(__para) {
		// if(!_isDraw){
			// return;
		// }
		if (!__para) {
			alert('매개변수가 없습니다.');
			return;
		}

		_dataLength = __para.dataLength - 1;
		_selector = __para.selector;
		_successCallback = __para.callback;
		_lastPage = parseInt(_dataLength / ROW) + 1;
		
		draw();
		_isDraw = false;
	};
	Paging.initCurrentPage = function(){
		_currentPage = 1;
		$(_selector + '> li').removeClass('on');
		$(_selector + '> li:nth(0)').addClass('on');
	};
	/*페이지가 변경되지않고 데이터만 받아올 경우 강제로 새로 그려지게 해야함*/
	Paging.setIsDrawTrue = function(){
		_isDraw = true;
	};
	/*LIMIT 부분에 요고만 삽입하도록 ajax짜면 됭 하면 되*/
	Paging.getCurrent = function() {
		return (_currentPage - 1) * ROW;
	};
	var draw = function() {
		$(_selector).empty();
		if(_dataLength <= 0){
			return;
		}
		var info = '';
		// if(_currentPage != 1){
			// info += '<li class="arrow"><a class="prev">이전</a></li>';
		// }

		if (moreCheck()) {
			for (var i = moreValue()-MAXPAGE; i < moreValue(); i++) {
				info += '<li><a href="#">' + i + '</a></li>';
			}
			info += '<li><a href="#">...</a></li>';
		} else {
			for (var i = moreValue()-MAXPAGE; i <= _lastPage; i++) {
				info += '<li><a href="#">' + i + '</a></li>';
			}
		}
		
		// if(_currentPage != _lastPage){
			// info += '<li class="arrow"><a class="next">다음</a></li>';
		// }

		$(_selector).html(info);
		$(_selector + '> li:nth('+(_currentPage-1)+')').addClass('on');
		listener();
	};
	var listener = function() {
		$(_selector + '> li > a').off('click').off('click').on('click', function(event) {
			event.preventDefault();

			var _input = $(this).html();
			switch(_input) {
				// case '이전' :
					// _currentPage = 1;
					// draw();
// 
					// $('#pagination > ul > li > a').removeClass('selected');
					// $('#pagination > ul > li:nth(1) > a').addClass('selected');
// 
					// _successCallback();
					// break;
// 
				// case '다음' :
					// _currentPage = _lastPage;
					// draw();
// 
					// _successCallback();
					// break;

				case '...' :
					_currentPage = moreValue();
					draw();

					_successCallback();
					break;

				default :
					_currentPage = _input;
					$(_selector + '> li').removeClass('on');
					$(this).parent().addClass('on');
					
					_successCallback();
			}
		});
	};
	/*다음 블락 첫번째 페이지*/
	var moreValue = function() {
		return (parseInt((_currentPage -1)/ MAXPAGE) + 1) * MAXPAGE +1;
	};
	/*...이 필요한지 검사*/
	var moreCheck = function() {
		var _isMore = false;

		if (moreValue() <= _lastPage) {
			_isMore = true;
		}

		return _isMore;
	};
})(window);
